Precharge devices are synchronous logic circuits that generate an output depending upon a predetermined combination of inputs. Precharge devices are characterized by two states, precharge and evaluate. In the precharge state, a node is charged to a known or predetermined voltage level. In the evaluate state, an array or "tree" of transistors is given the opportunity to discharge the node to a second known or predetermined voltage level or to allow the charge to persist. Each input signal is connected, typically, to a gate of one or more of the transistors in the tree. The final charge on the node may thereby be controlled by the particular values of the inputs and the way in which the transistors are connected within the tree. The final voltage at the node, high or low, acts as the output of the precharge device after being suitably buffered and, perhaps, inverted. The two states of a precharge device each correspond to one of the two logic states of a clock signal cycle to which the precharge device is synchronized. Typically, a precharge device precharges the node when the clock is low and evaluates the node when the clock is high.
Two common uses for precharge devices are as decoders and as comparators. Decoders output a unique signal if and only if all of the bits of an input match a predetermined set of values. A decoder may thereby enable a particular write line in a matrix of memory cells if and only if an input memory address matches the predetermined address of a line of memory cells to which the decoder is connected. Similarly, a comparator will output a unique signal if and only if two inputs, each containing multiple data bits, are identical.
The particular way the inputs are combined within the tree of a precharge device determines the particular operating characteristics and, hence, the particular name of the precharge device. As described above, if the tree discharges the charged node if and only if the input bits match a single set of predetermined values, then the precharge device is a decoder. Any Boolean function can be implemented as a precharge device by constructing the tree such that the tree causes the precharge device to discharge when the Boolean function is either true or false, as needed by the designer. Logically, it is irrelevant whether a tree allows the charge in a precharge device to persist when the Boolean function is true or to persist when the function is false.
Each precharge device can be implemented in one of two logically equivalent ways. The two implementations correspond to a tree that discharges the charged node when the Boolean fucntion is true and to a tree that discharges the charged node when the Boolean function is false. When the precharge device discharges the node if the Boolean function is true, it is said to "evaluate to the active state." When the precharge device discharges the node if the Boolean function is false, it is said to "evaluate to the inactive state." One of these implementations uses its inputs directly connected in a manner to describe a particular function. The second implementation uses the complements of the inputs and a second function. DeMorgan's law allows the designer to restructure the tree of the first function to produce a tree for the second function. The second function is the first function's complement.
Although logically equivalent, each of the two possible implementations of a precharge device has its own disadvantage. Specifically, the more transistors connected in series within the tree, the slower the performance of the precharge device. This disadvantage is typically associated with a precharge device that discharges the charged node when its function is true. Conversely, a precharge device that evaluates to the inactive state generates an output unacceptable to many types of circuits. This disadvantage is typically associated with a precharge device that discharges the charged node when its function is false.